package pe.com.upc.edu.rtt.filtrarpartido.service.impl;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import pe.com.upc.edu.rtt.Estadio;
import pe.com.upc.edu.rtt.EstadioServiceSoapProxy;
import pe.com.upc.edu.rtt.Ubigeo;
import pe.com.upc.edu.rtt.UbigeoServicesSoapProxy;
import pe.com.upc.edu.rtt.filtrarpartido.bean.EstadioBean;
import pe.com.upc.edu.rtt.filtrarpartido.bean.UbicacionBean;
import pe.com.upc.edu.rtt.filtrarpartido.service.FiltrarPartidosService;

import com.google.gson.Gson;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;

@Service("FiltrarPartidosService")
public class FiltrarPartidosServiceImpl implements FiltrarPartidosService {

	private static Gson gson = new Gson();
	private static UbigeoServicesSoapProxy proxyUbigeo = new UbigeoServicesSoapProxy();
	private static EstadioServiceSoapProxy proxyEstadio = new EstadioServiceSoapProxy();

	private static final Log _log = LogFactoryUtil.getLog(FiltrarPartidosService.class);

	@Override
	public String getUbicacionesDisponibles(String filtrado) {
		try {
			if(_log.isDebugEnabled())_log.debug("getUbicacionesDisponibles filtrado:"+filtrado);
			Ubigeo[] listaUbigeo = proxyUbigeo.listarUbigeoPorNombre(filtrado);
			if (listaUbigeo != null && listaUbigeo.length > 0) {
				List<UbicacionBean> listaUbicacionBeans = new ArrayList<UbicacionBean>();
				UbicacionBean ubicacionBean = null;
				for (Ubigeo ubigeo : listaUbigeo) {
					ubicacionBean = new UbicacionBean();
					ubicacionBean.setIdUbicacion(ubigeo.getIdubigeo());
					ubicacionBean.setCodigoUbicacion(ubigeo.getCodigo());
					ubicacionBean.setNombreUbicacion(ubigeo.getNombre());
					listaUbicacionBeans.add(ubicacionBean);
				}
				String strReturn = gson.toJson(listaUbicacionBeans);
				if(_log.isDebugEnabled())_log.debug("getUbicacionesDisponibles strReturn:"+strReturn);
				return strReturn;
			}
		} catch (RemoteException e) {
			_log.error("Error en la conexion remota ", e);
		}
		return "";
	}

	@Override
	public String getEstadiosDisponibles(String codigoUbicacion) {
		try {
			if(_log.isDebugEnabled())_log.debug("getEstadiosDisponibles codigoUbicacion:"+codigoUbicacion);
			Estadio[] listaEstadios = proxyEstadio.listarEstadioPorUbigeo(codigoUbicacion);
			if (listaEstadios != null && listaEstadios.length > 0) {
				List<EstadioBean> listaEstadioBeans = new ArrayList<EstadioBean>();
				EstadioBean estadioBean = null;
				for (Estadio estadio : listaEstadios) {
					estadioBean = new EstadioBean();
					estadioBean.setIdEstadio(estadio.getIdestadio());
					estadioBean.setNombreEstadio(estadio.getNombre());
					listaEstadioBeans.add(estadioBean);
				}
				String strReturn = gson.toJson(listaEstadioBeans);
				if(_log.isDebugEnabled())_log.debug("getEstadiosDisponibles strReturn:"+strReturn);
				return strReturn;
			}
		} catch (RemoteException e) {
			_log.error("Error en la conexion remota ", e);
		}
		return "";

	}

}
